<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
        <channel>
        <title>перенос сайта / Tag search / Русский клуб Joomla</title>
        <link>http://joomclub.net/en/rss/tag/перенос сайта/</link>
        <description><![CDATA[Сайт посвящен Joomla во всех ее проявлениях, мы рассказываем о шаблонах, расширениях, компонентах, плагинах и модулях]]></description>
        <language>ru</language>
        <managingEditor>tena2000@mail.ru</managingEditor>
        <webMaster>tena2000@mail.ru</webMaster>
        <generator>Alto CMS v.1.1.13</generator>
                    <item>
                <title>Как обновить сайт без ЧПУ и не потерять индексацию.</title>
                <guid isPermaLink="true">http://joomclub.net/en/t/74/</guid>
                <link>http://joomclub.net/en/blog/seo/74.html</link>
                <author>idm.box@gmail.com</author>
                <description><![CDATA[<p>Недавно мне довелось переносить один сайт с какой-то там CMS на Joomla. По функциям это был сайт — каталог товаров. И если где-то в просторах интернета осталась ссылка на какой-то товар «старого» сайта, то при нажатии на нее у вас должен открыться «новый сайт» с этим-же товаром. Вроде все довольно просто, т.к. в Joomla 2.5 есть встроенный компонент перенаправления, в котором мы можем прописать старые ссылки и редиректить на новые, но… не тут то было.</p><p>На старом сайте все ссылки были неЧПУшные (<i>httр://site.ru/index.php?cid=1&tid=2&fid=345</i>) и поэтому встроенный модуль перенаправления просто не понимал эти ссылки, т.к. по своей сути все эти ссылки были -httр://site.ru/index.php и все остальное после этого были всего-лишь параметрами. Поэтому создавать перенаправление было бессмысленным. Первый скачанный модуль из JED действовал по такому-же принципу и мне пришлось идти другим путем:</p><p><strong>Другой путь.</strong></p><p>Сначала я разобрал ссылку старого сайта на составные части:<br>
 <a name="cut" rel="nofollow"></a> <i>httр://site.ru/index.php?cid=2&tid=3&fid=345</i><br>
cid=1 — ID основной категории (раздел)<br>
tid=2 — ID категории товаров<br>
fid=345 — ID товара<br>
Пролистав старый сайт я понял, что все, что мне нужно находится в одном разделе (cid=2), далее мне надо было перенести «Реализованные объекты» (tid=1), категорию «Кирпичи» (tid=8), категорию «Блоки» (tid=2) и сами товары (fid=345 и др.)</p><p>Хотел уточнить задачу: все товары по старым ссылкам — средиректить на товары на новом сайте. Если данного товара на новом сайте нет, но он входит в категорию товаров нового сайта (например пенобетонный блок уже не выпускают, то на новом сайте просто открывается категория блоки). Если товар есть на старом сайте но на новом нет и даже категории такой нет, то дать свою 404 (например поддоны от кирпичей больше не продают и не будут, то откроется страница, где написано «Данного товара больше нет, посмотрите наши новые товары»).</p><p>Исходя из этого сслыки должны привестись к такому виду:<br>
<i>httр://site.ru/index.php?cid=2&tid=3&fid=345  &gt;&gt;&gt;  http://site.ru/bloki/block-b01</i><br>
<i>httр://site.ru/index.php?cid=2&tid=1&fid=234  &gt;&gt;&gt;  http://site.ru/realizovannye-obyekty</i></p><p>Со старого сайта из БД вытащил таблицу товаров (мне нужны были только блоки) и с помощью регулярок привел ее к виду:id товара — название товара<br>
и опять зарегулярил до нужного вида:<br>
345 =&gt; '/bloki/blok-b01'</p><p>Затем <strong>создаем файлик перенаправления</strong>:</p><pre class="prettyprint"><code>&lt;?php<br />
// Массив ссылок вытащенный из БД<br />
$arr = array(<br />
345 =&gt; '/bloki/blok-b01',<br />
372 =&gt; '/bloki/blok-b02',<br />
366 =&gt; '/bloki/blok-b03',<br />
367 =&gt; '/bloki/blok-b04',<br />
368 =&gt; '/bloki/blok-b05',<br />
369 =&gt; '/bloki/blok-b06',<br />
375 =&gt; '/bloki/blok-b07',<br />
376 =&gt; '/bloki/blok-b08',<br />
);<br />
// Условия перенаправления - см. блок-схему<br />
if(isset($_GET['tid'])){<br />
    if($_GET['tid'] == 1){<br />
        header ('HTTP/1.1 301 Moved Permanently');<br />
        header ('Location: /realizovannye-obyekty');<br />
    } <br />
    elseif($_GET['tid'] == 8){<br />
        header ('HTTP/1.1 301 Moved Permanently');<br />
        header ('Location: /kirpici');<br />
    } <br />
    elseif($_GET['tid'] == 2){<br />
        if(isset($_GET['fid'])){<br />
            if(isset($arr[$_GET['fid']])){<br />
                header ('HTTP/1.1 301 Moved Permanently');<br />
                header ('Location: '.$arr[$_GET['fid']]);<br />
            } else {<br />
                header ('HTTP/1.1 301 Moved Permanently');<br />
                header ('Location: /bloki');<br />
            } <br />
        } else {<br />
                header('HTTP/1.1 301 Moved Permanently');<br />
                header ('Location: /bloki');<br />
            }<br />
    } else {<br />
        header ('HTTP/1.0 404 Not Found');<br />
        header ('Location: /404');<br />
    }<br />
} else {<br />
    include('joomlaindex.php');<br />
}</code></pre><p>Что делает этот файл — смотрим блок схему.</p><img src="https://dl.dropbox.com/u/35693018/joomlaforum/rewrite-j-none-sef.gif" style="cursor: default;"><p>Что дальше делаем?</p> <p>Переименовываем стандартный файл (в КОРНЕ САЙТА… не в шаблоне) index.php в joomlaindex.php (взгляните на последнюю строчку кода) и наш файлик перенаправления сохраняем как index.php и кладем в корень сайта, после этого правим файл .htaccess</p><p>В самом начале файла добавляем<br>
<pre class="prettyprint"><code>DirectoryIndex joomlaindex.php</code></pre>и затем 38 и 74 строка (по умолчанию в joomla 2.5)</p><pre class="prettyprint"><code>RewriteRule .* index.php [F]<br />
RewriteRule .* index.php [L]</code></pre><p>приводим к виду:</p><pre class="prettyprint"><code>RewriteRule .* joomlaindex.php [F]<br />
RewriteRule .* joomlaindex.php [L]</code></pre><p>И если убрать комментарии из файла, то должно получится так:</p><pre class="prettyprint"><code># Добавлена 2 строка ... 9 и 15 переименовано index.php в joomlaindex.php<br />
DirectoryIndex joomlaindex.php<br />
Options +FollowSymLinks<br />
RewriteEngine On<br />
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]<br />
RewriteCond %{QUERY_STRING} (&lt;|%3C)([^s]*s)+cript.*(&gt;|%3E) [NC,OR]<br />
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]<br />
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})<br />
RewriteRule .* joomlaindex.php [F]<br />
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]<br />
RewriteCond %{REQUEST_URI} !^/index\.php<br />
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteRule .* joomlaindex.php [L]</code></pre><p>Если вы не правили htaccess — то смело копипасьте, вместе с первой строкой комментария, она понадобится в будущем.</p><p><strong>Готово:<br>
<i>httр://site.ru/index.php?cid=2&tid=3&fid=345  &gt;&gt;&gt;  http://site.ru/bloki/block-b01</i><br>
<i>httр://site.ru/index.php?cid=2&tid=1&fid=234  &gt;&gt;&gt;  http://site.ru/realizovannye-obyekty</i><br>
Работает.</strong></p><p>Сразу хочу предупредить — при обновлении наш файлик заменится стандартным от Joomla и сайт перестанет перенаправлять, поэтому бэкапьте файлы.</p><p>Ну и еще по опыту: Через 2 недели (2 апа) в Яндексе все ваши ссылки переиндексируются и в выдаче вместо старых кракозябл будут новенькие ЧПУшные со стареньким весом (если таковой имелся).Если ваша миссия на этом закончена, то удаляем наш index.php, файлик joomlaindex.php переименовываем в index.php и из файла .htaccess удаляем 2 строку и меняем 9 и 15 (я комментарии написал в этом файле — они на первой строке).</p><p>Кирпичи и блоки вымышленные. В оригинале у меня совсем другая продукция и горАздо бОльший массив из товаров.(не адалт и не варез, просто не афиширую)</p>]]></description>
                <pubDate>Wed, 17 Oct 2012 15:02:29 +0400</pubDate>
                            </item>
            </channel>
    </rss>
